Amazon Lexのエイリアスとバージョンニングを解説

Amazon Lexのエイリアスとバージョンニングを解説

Clock Icon2024.07.16

はじめに

Amazon Lexを開発環境や本番環境で利用する際、ボットのバージョニングとエイリアスは重要な機能です。本記事ではこれらの機能について詳しく説明します。

バージョン

Amazon Lexボットをアプリケーション内で使用する際、デプロイを制御するためにバージョニング機能が利用できます。
Lexでバージョンを作成すると、特定の時点でのボットの設定をスナップショットのように固定化できます。

ボットを作成した時点では、ドラフトバージョンのみが作成されます。

cm-hirai-screenshot 2024-07-11 16.11.11

この状態でバージョンを作成すると、「バージョン1」が作成されます。バージョン名は指定できません。さらにバージョンを作成すると「バージョン2」、「バージョン3」といったように番号付きで作成されます。

cm-hirai-screenshot 2024-07-11 16.14.01

バージョンを作成すると、そのバージョンの作成時点でのボットの設定が利用できます。作成したバージョンは、ドラフトバージョンで作業を続けても変更されずに残ります。また、一度作成したバージョンのボット設定は変更できません。

このような特性から、バージョンは「スナップショット」として捉えることができます。

ドラフトバージョンは例外で、ボット修正中の設定が反映される唯一のバージョンです。

注意点 1

AWSのドキュメントによると、作成したボットバージョンが6ヶ月間利用されなかった場合、再ビルドしない限り、そのバージョンを利用することはできなくなります。

ボットバージョンが6か月間使用されない場合、Amazon Lex V2 はそのバージョンを非アクティブとマークします。バージョンが非アクティブの場合、ボットでランタイムオペレーションを使用することはできません。ボットをアクティブにするには、バージョンに関連付けられているすべての言語を再構築します。

利用できなくなった場合、再ビルドしましょう。

注意点 2

バージョンを作成する前に必ずドラフトバージョンを構築(Build)しましょう。
構築する前にバージョンを作成すると、ボットを利用できません。

エイリアス

エイリアスは、ボットの特定バージョンを参照するポインタ、つまり別名のことを指します。

エイリアスを使用すると、アプリケーションが使用しているバージョンを簡単に更新できます。

ドラフトバージョンは、エイリアスTestBotAliasと関連付けられています。作成したバージョンは、エイリアスと関連付けることで使用するバージョンを切り替えることができます。

エイリアスとボットの関連づけについて、図で説明します。

まず、ボット作成後は、エイリアスTestBotAliasとドラフトバージョンが自動作成され、TestBotAliasはドラフトバージョンと関連づけられています。

cm-hirai-screenshot 2024-07-11 16.45.43

ドラフトバージョンは、AWS Lambdaで言うところの$LATESTに相当します。ただし、Lambdaではエイリアスが自動作成されないため、この点がLexとは異なります。

ボットを設定し、バージョンを作成すると、ドラフトバージョンと同じボット設定の「バージョン1」が作成されます。

cm-hirai-screenshot 2024-07-11 16.45.48

エイリアスdevを作成し、バージョン1と関連づけます。

cm-hirai-screenshot 2024-07-11 16.45.54

TestBotAliasとドラフトバージョンはセットであり、作成したエイリアスやバージョンとは関連付けられません。

cm-hirai-screenshot 2024-07-11 16.45.59

さらにボットの設定を修正すると、修正内容はドラフトバージョンにのみ反映され、バージョン1はスナップショットのため変更されません。

cm-hirai-screenshot 2024-07-11 16.46.05

ボットの設定変更完了後、バージョンを再度作成すると、ドラフトバージョンと同じ設定の「バージョン2」が作成されます。

cm-hirai-screenshot 2024-07-11 16.46.10

エイリアスdevの関連付けをバージョン2にすることで、devに新設定が反映されます。

cm-hirai-screenshot 2024-07-11 16.46.16

ちなみに、バージョンを作成する際、ソース元バージョンを選択できますので、ドラフトバージョン以外にもバージョン1やバージョン2は選択できます。あまり必要性は感じませんが。

cm-hirai-screenshot 2024-07-11 16.46.24

実際に作成確認

実際に作成してみます。事前にドラフトバージョンのボットは構築(Build)済みです。

どちらからでもよいですが、今回はバージョンから作成します。
cm-hirai-screenshot 2024-07-11 17.25.30
デフォルトのまま作成します。
cm-hirai-screenshot 2024-07-11 17.25.54
バージョン作成時に、ソースとしてドラフトバージョン以外を選択したい場合は、詳細設定から選択できます。
cm-hirai-screenshot 2024-07-11 17.26.06
バージョン1が作成されました。
cm-hirai-screenshot 2024-07-11 17.26.29
エイリアスを作成し、バージョン1に関連付けます。現時点ではTestBotAliasがドラフトバージョンに関連付けられています。
cm-hirai-screenshot 2024-07-11 17.26.35
エイリアス名をdevとし、バージョン1を関連付けて作成します。
cm-hirai-screenshot 2024-07-11 17.26.51

エイリアスdevは、バージョン1に関連付けられました。
cm-hirai-screenshot 2024-07-11 17.27.12
以下の図と同じ状況です。
cm-hirai-screenshot 2024-07-11 16.45.54

TestBotAlias利用の注意点

エイリアスTestBotAliasを利用する際は、2点注意点があります。

1点目

ランタイムリクエストの数が制限されています。クォーターでも確認できますが、TestBotAliasでの同時テキストモードでの会話や音声モードでの会話の上限数は2つまでです。

検証環境では同時利用数が少ないため問題かもしれませんが、本番環境では同時利用数が2を超える可能性が高いため、自作のエイリアスを利用することをお勧めします。

https://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/quotas.html#quotas-service

2点目

LexのAWSドキュメントのベストプラクティスには、以下の記載があります。

ドラフトバージョンのボットを更新すると、Amazon Lex はボットの TSTALIASID を使用しているクライアントアプリケーションで進行中のあらゆる会話をシャットダウンします。ドラフトバージョンは更新される場合があるため、通常、本番稼働環境では TSTALIASID alias のボットを使用しないでください。代わりに、別のバージョンとエイリアスを発行して使用します。

TSTALIASIDは、エイリアスTestBotAliasのエイリアスIDのことです。

つまり、TestBotAliasエイリアスをアクセス先にしているアプリケーションの場合、ボットの設定を修正する度に、アプリケーション側での会話が強制終了されます。

したがって、アプリケーションのアクセス先について、本番環境ではTestBotAliasではなく自作のエイリアスを向き先とし、検証環境ではTestBotAliasもしくは自作のエイリアスを向き先とすることをお勧めします。

cm-hirai-screenshot 2024-07-11 17.19.44

https://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/guidelines.html

最後に

今回は、Amazon Lexのエイリアスとバージョニングについて解説しました。

特に、TestBotAliasを利用する際の注意点や本番環境での利用方法について説明しました。 環境ごとに適切なエイリアスとバージョンを使い分けることが重要です。

バージョニングを活用することで、ボットの変更履歴を管理し、必要に応じて以前のバージョンに戻すことが容易になります。
また、エイリアスを使用することで、アプリケーションのコードを変更することなく、使用するボットのバージョンを柔軟に切り替えることができます。

Lexのエイリアスとバージョニングを適切に利用し、安定したLexの運用をしましょう。

参考

https://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/versions-aliases.html

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.